Oracle中timeStamp数据显示格式设定 您所在的位置:网站首页 sqlplus 显示查询时间 Oracle中timeStamp数据显示格式设定

Oracle中timeStamp数据显示格式设定

2024-02-08 16:30| 来源: 网络整理| 查看: 265

Windows系统

可以通过配置环境变量完成(nls_date_format,nls_timestamp_format,nls_timestamp_tz_format),我们只需要在系统属性-高级-环境变量-系统变量

nls_date_format参数用于设置日期显示格式,设置的方式有多种,不同的方式也会带来不同的结果。参数的设置是有优先级的,日期格式的参数设置也不例外。优先级如下(低到高):初始化参数 < 系统环境变量 < 会话级(session)< 函数

在进入数据库中,使用show parameter nls显示如下。

SQL> show parameter nlsNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------nls_calendar                         stringnls_comp                             stringnls_currency                         stringnls_date_format                      stringnls_date_language                    stringnls_dual_currency                    stringnls_iso_currency                     stringnls_language                         string      SIMPLIFIED CHINESEnls_length_semantics                 string      BYTEnls_nchar_conv_excp                  string      FALSEnls_numeric_characters               stringNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------nls_sort                             stringnls_territory                        string      CHINAnls_time_format                      stringnls_time_tz_format                   stringnls_timestamp_format                 stringnls_timestamp_tz_format              string

1.用初始化参数来设置nls_date_format

检查是否设置了nls_date_format环境变量,从下面的结果可知并没有设置 [oracle@oracle11g ~]$ export nls_date_format SQL>show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string

修改参数nls_date_format

SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile; System altered. SQL> shutdow immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 327155712 bytes Fixed Size 1273516 bytes Variable Size 138412372 bytes Database Buffers 184549376 bytes Redo Buffers 2920448 bytes Database mounted. Database opened. SQL> show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string yyyy-mm-dd hh24:mi:ss SQL> select sysdate from dual; SYSDATE ------------ 04-FEB-15

在修改参数nls_date_format后,我们查询系统时间并没有以'yyyy-mm-dd hh24:mi:ss'这种格式显式,因为NLS_LANG环境变量同样会影响到nls_date_format参数,只要存在NLS_LANG环境变量,Oracle就会使用环境变量的值(即使nls_date_format),根据上面我们提到的优先级,所以初始化参数文件设置的值会被忽略,但由于环境变量中nls_date_format并没有设置,所以Oracle还是使用了默认的格式。

现在设置NLS_LANG环境变量

[oracle@oracle11g ~]$ export NLS_LANG [oracle@oracle11g ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 10:00:05 2015 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string yyyy-mm-dd hh24:mi:ss SQL> select sysdate from dual; SYSDATE ------------------- 2015-02-04 10:01:26

从上面的结果可以看到当我们去掉环境变量nls_lang后,查询系统时间就是以初始化参数nls_date_format的格式(yyyy-mm-dd hh24:mi:ss)来显示的

2.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',将环境变量设置为'yy-mm-dd hh24:mi:ss'来观察它们的优先级

[oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss' [oracle@oracle11g ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string yyyy-mm-dd hh24:mi:ss SQL> select sysdate from dual; SYSDATE ----------------- 15-02-04 09:44:31

可以看到查询系统时间以是环境变量所设置的格式('yy-mm-dd hh24:mi:ss')来显示的。这就说明nls_date_format在环境变量中的设置比初始化参数的优先级高。

3.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',环境变量设置为'yy-mm-dd hh24:mi:ss',并在会话级将nls_date_format设置为'dd-mm-yy hh24:mi:ss'

[oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss' [oracle@oracle11g ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. SQL> alter session set nls_date_format='dd-mm-yy hh24:mi:ss'; Session altered. SQL> show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string yyyy-mm-dd hh24:mi:ss SQL> select sysdate from dual; SYSDATE ----------------- 04-02-15 09:50:01

从上面的结果可以看到查询系统时间是以会话级参数nls_date_format的格式(='dd-mm-yy hh24:mi:ss')来显示的,这就说明了nls_date_format参数的优先级为:会话级>环境变量>初始化参数

4.我们将参数nls_date_format设置为'yyyy-mm-dd hh24:mi:ss',环境变量设置为'yy-mm-dd hh24:mi:ss',并在会话级将nls_date_format设置为'dd-mm-yy hh24:mi:ss',使用函数来转换日期格式为'mm-dd-yy hh24:mi:ss'

[oracle@oracle11g ~]$ export nls_date_format='yy-mm-dd hh24:mi:ss' [oracle@oracle11g ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Wed Feb 4 09:44:07 2015 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. SQL> alter session set nls_date_format='dd-mm-yy hh24:mi:ss'; Session altered. SQL> show parameter nls_date_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ nls_date_format string yyyy-mm-dd hh24:mi:ss SQL> select to_char(sysdate,'mm-dd-yy hh24:mi:ss') from dual; TO_CHAR(SYSDATE,' ----------------- 02-04-15 10:11:44

从上面的结果可以看到函数的优先级最高,这就证明了日期格式的优先级为:初始化参数 < 系统环境变量 < 会话级(session)< 函数



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有